import request from '@/utils/request'

/**
 * 购物车模块API
 */
export default {
  // 获取购物车列表
  list: () => request.get('/api/v1/cart/list'),

  /**
   * 添加商品到购物车
   * @param {Object} data 购物车项数据
   * @param {number} data.productId 商品ID
   * @param {number} [data.skuId] SKU ID（可选）
   * @param {number} data.quantity 数量 (最小值: 1)
   * @returns {Promise<void>} 添加结果
   */
  add: (data) => request.post('/api/v1/cart', {
    productId: data.productId,
    skuId: data.skuId,
    quantity: data.quantity
  }),

  /**
   * 更新购物车商品数量
   * @param {number} id 购物车项ID
   * @param {number} quantity 新的数量 (最小值: 1)
   * @returns {Promise<void>} 更新结果
   */
  updateQuantity: (id, quantity) => request.put(`/api/v1/cart/${id}/quantity/${quantity}`),

  /**
   * 更新商品选中状态
   * @param {number} id 购物车项ID
   * @param {boolean} selected 新的选中状态
   * @returns {Promise<void>} 更新结果
   */
  // updateSelected: (id, selected) => request.put(`/api/v1/cart/${id}/selected`, {
  //   selected
  // }),

  /**
   * 批量更新商品选中状态
   * @param {boolean} selected 新的选中状态
   * @param {Array<number>} ids 购物车项ID列表
   * @returns {Promise<void>} 更新结果
   */
  // batchUpdateSelected: (selected, ids) => request.put('/api/v1/cart/selected/batch', { selected, ids }),

  /**
   * 从购物车移除商品
   * @param {number} id 购物车项ID
   * @returns {Promise<void>} 删除结果
   */
  delete: (id) => request.delete(`/api/v1/cart/${id}`),

  /**
   * 批量移除购物车商品
   * @param {Array<number>} ids 购物车项ID列表
   * @returns {Promise<void>} 删除结果
   */
  batchRemove: (ids) => request.delete('/api/v1/cart/batch', ids),

  /**
   * 清空购物车
   * @returns {Promise<void>} 清空结果
   */
  clear: () => request.delete('/api/v1/cart/clear'),

  /**
   * 获取购物车商品数量
   * @returns {Promise<number>} 购物车商品数量
   */
  getCount: () => request.get('/api/v1/cart/count'),

  /**
  //  * 获取按商家分组的购物车列表
  //  * @param {Object} params 查询参数
  //  * @param {number} [params.pageNum=1] 页码 (最小值: 1)
  //  * @param {number} [params.pageSize=10] 每页条数 (最小值: 1)
  //  * @returns {Promise<Object>} 分页后的商家分组购物车列表
  //  */
  // getByMerchant: (params = {}) => request.get('/api/v1/cart/by-merchant', {
  //   params: {
  //     pageNum: params.pageNum || 1,
  //     pageSize: params.pageSize || 10
  //   }
  // })
} 